import torchvision
from torch import nn
from torch.utils.data import DataLoader

# train_data = torchvision.datasets.ImageNet("./data_ImageNet",split="train",download=True,
#                                            transform=torchvision.transforms.ToTensor())
#数据集现在不能这样下了，必须要手动下载放在相应的文件夹下才可以

#验证pretrained参数的取值True和False的区别
vgg16_false = torchvision.models.vgg16(pretrained=False)#当pretrained取值为false时表示不使用该网络在ImageNet数据集上训练好的参数，
# 而是使用网络的初始参数也即默认参数
vgg16_true = torchvision.models.vgg11(pretrained=True)#当pretrained取值为True时，表示使用训练好的参数，当运行的时候就会下载参数文件
print(vgg16_true)
#vgg16结构会进行1000个类别的分类
#通过改写vgg16的结构避免重新构造vgg结构，即在现有vgg16网络结构上进行结构修改
vgg16_true.add_module("add_linear",nn.Linear(1000,10))
vgg16_true.classifier.add_module("add_cl_linear",nn.Linear(1000,10))
print(vgg16_true)

print(vgg16_false)
vgg16_false.classifier[6] = nn.Linear(4096,10)
print(vgg16_false)